/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.modelo;

import com.ipartek.formacion.gestformwww.modelo.beans.Asistencia;
import com.ipartek.formacion.gestformwww.modelo.beans.Calendario;
import com.ipartek.formacion.gestformwww.modelo.beans.Calificacion;
import com.ipartek.formacion.gestformwww.modelo.beans.Curso;
import com.ipartek.formacion.gestformwww.modelo.beans.DiaClase;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import com.ipartek.formacion.gestformwww.modelo.clases.DAOFactory;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;

/**
 *
 * @author Alvaro y Karmele
 */
public class ModeloDiaClase {
      private DAOFactory factoria = null;

    public ModeloDiaClase() {
        factoria = DAOFactory.getDAOFactory(DAOFactory.SQLSERVER);
    }

     public ArrayList<DiaClase> listarDiasClase(Integer idCurso, Calendar fecha) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().listarDiasClase(idCurso, fecha);
    }
    public ArrayList<DiaClase> listarDiasClaseCurso(Curso curso, Calendar fecha) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().listarDiasClaseCurso(curso, fecha);
    }

  /*  public ArrayList<DiaClase> comprobarDocente() throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().comprobarDocente();
    }
    public ArrayList<Timestamp> obtenerFechas() throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().obtenerFechas();
    }
    public ArrayList<DiaClase> anyadirObservaciones(ArrayList<DiaClase> diaclaseCoincideHora, boolean da ) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().anyadirObservaciones(diaclaseCoincideHora,da);
    }
    public ArrayList<DiaClase> comprobarAula() throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().comprobarAula();
    }*/

    public Calendar getPrimerDia(Integer idcurso) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().getPrimerDia(idcurso);
    }

    public Calendar getUltimoDia(Integer idcurso) throws GestorFormacionExcepcion {
        return factoria.getIDiaClaseDAO().getUltimoDia(idcurso);
    }

    //Sara y Victor
    public void borrarDiasClase(ArrayList<Integer> idCursos) throws GestorFormacionExcepcion{
        factoria.getIDiaClaseDAO().borrarDiasClase(idCursos);
    }

    //Sara y Víctor
    public void crearCalendario(Calendario cal) throws GestorFormacionExcepcion {
        factoria.getIDiaClaseDAO().crearCalendario(cal);
    }

    //Sara  y Victor
     public void modificarCalendario(Calendario calendario) throws GestorFormacionExcepcion {
         factoria.getIDiaClaseDAO().modificarCalendario(calendario);
     }

    //Sara y Víctor
    public void borrarCalendario(Integer idCurso) throws GestorFormacionExcepcion {
        factoria.getIDiaClaseDAO().borrarCalendario(idCurso);
    }

    //David y Borja
    public void borrarCalendario(Calendario calendario) throws GestorFormacionExcepcion{
        factoria.getIDiaClaseDAO().borrarCalendario(calendario);
    }

    //Sara Y Victor
    public DiaClase getDiaClase(Integer idClase) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().getDiaClase(idClase);
    }

    //Sara y Victor
    public boolean comprobarDias(Calendario c) throws GestorFormacionExcepcion {
        return factoria.getIDiaClaseDAO().comprobarDias(c);
    }

    //Karmele y Alvaro
    public boolean comprobarDuracion(int idcurso) throws GestorFormacionExcepcion{
        Boolean coincide;
        int horas=0;
        int min=0;
        Curso cur=factoria.getICursoDAO().visualizarCurso(idcurso);
        int dur=factoria.getIDiaClaseDAO().duracionDiasClase(idcurso);

        horas=dur/60;
        min=dur-horas*60;

        if(horas==cur.getCurDuracion()){
            if(min==cur.getCurDuracionMinutos()){
                coincide=true;
            }else{
                coincide=false;
            }
        }else{
            coincide=false;
        }

        return coincide;
    }
    // Aitor y Xarles
    public void CrearFalta(Asistencia asistencia)throws GestorFormacionExcepcion{
         factoria.getIAsistenciaDAO().crearFalta(asistencia);
    }

    public boolean buscarAsistencia(int idAlumno, int idCurso, Timestamp fecha) throws GestorFormacionExcepcion{
        return factoria.getIAsistenciaDAO().buscarAsistencia(idAlumno, idCurso, fecha);
    }
    
    //Aitor y Xarles
    public void crearCalificacion(Calificacion calificacion)throws GestorFormacionExcepcion{
        factoria.getICalificacionDAO().crearCalificacion(calificacion);
    }

    //Sara y Alvaro
    public ArrayList<Calificacion> buscarCalificacion(int idAlumno, int idCurso) throws GestorFormacionExcepcion {
        return factoria.getICalificacionDAO().buscarCalificacion(idAlumno, idCurso);
    }

    //Sara y Adrian
    public boolean buscarCalificacion(int idAlumno, int idCurso, Timestamp fecha) throws GestorFormacionExcepcion {
        return factoria.getICalificacionDAO().buscarCalificacion(idAlumno, idCurso, fecha);
    }

    //Sara y Alvaro
    public ArrayList<Asistencia> buscarAsistencia(int idAlumno, int idCurso) throws GestorFormacionExcepcion {
        return factoria.getIAsistenciaDAO().buscarAsistencia(idAlumno, idCurso);
    }

    //Aitor y Xarles
    public void borrarFalta(ArrayList<Asistencia> asistencia)throws GestorFormacionExcepcion{
        factoria.getIAsistenciaDAO().borrarFalta(asistencia);
    }
    //Aitor y Xarles
    public void borrarCalificacion(ArrayList<Calificacion> calificacion)throws GestorFormacionExcepcion{
        factoria.getICalificacionDAO().borrarCalificacion(calificacion);
    }

    public ArrayList<DiaClase> getDiasConflictos(DiaClase dia) throws GestorFormacionExcepcion{
        return factoria.getIDiaClaseDAO().getDiasConflictos(dia);
    }

}

